﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using com.loto.Common;
using com.huigo.B2B.Web.alipay;

namespace com.huigo.B2B.Web.pay.alipay
{
    public partial class Redirect : BasePage
    {
        /// <summary>
        /// 支付信息
        /// </summary>
        public PayInfo payInfo
        {
            get
            {
                if (Context.Handler is ITransfer)
                {
                    ITransfer trans = (ITransfer)Context.Handler;
                    return trans.TransPayInfo;
                }
                else return null;
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.payInfo == null)
            {
                //Log.WritePayLog(CustName, "支付信息为空，非法进入此页面或支付信息丢失！", Request.RawUrl);
                //MessageBox.ShowAndRedirect(this.Page, "支付信息不正确！", "/center/");
                Response.Redirect("/center/");
                return;
            }
            //插入交易前信息
            if (PayService.Invoke(payInfo))
            {
                //支付类型
                string payment_type = "1";
                //必填，不能修改
                string host = "http://" + Request.ServerVariables["HTTP_HOST"].Replace("localhost", "127.0.0.1");
                string rurl = host + "/pay/alipay/return_url.aspx";

                string nurl = "http://www.lequgo.com/pay/alipay/notify_url.aspx";
                //服务器异步通知页面路径
                string notify_url = host + "/pay/alipay/Return.aspx";
                //需http://格式的完整路径，不能加?id=123这类自定义参数

                //页面跳转同步通知页面路径
                string return_url = host + "/pay/alipay/Notify.aspx";
                //需http://格式的完整路径，不能加?id=123这类自定义参数，不能写成http://localhost/

                //卖家支付宝帐户
                string seller_email = "icosuyu@sina.com";
                //必填

                //商户订单号
                string out_trade_no = payInfo.OrderId;
                //商户网站订单系统中唯一订单号，必填

                //订单名称
                string subject = payInfo.OrderName;
                //必填

                //付款金额
                string total_fee = payInfo.TotalFee.ToString();
                //必填

                //订单描述

                string body = payInfo.OrderName;
                //商品展示地址
                string show_url = host + "/goods-best/list.aspx"; ;
                //需以http://开头的完整路径，例如：http://www.xxx.com/myorder.html

                //防钓鱼时间戳
                string anti_phishing_key = "";
                //若要使用请调用类文件submit中的query_timestamp函数

                //客户端的IP地址
                string exter_invoke_ip = "";
                //非局域网的外网IP地址，如：221.0.0.1


                ////////////////////////////////////////////////////////////////////////////////////////////////

                //把请求参数打包成数组
                SortedDictionary<string, string> sParaTemp = new SortedDictionary<string, string>();
                sParaTemp.Add("partner", AlipayConfig.Partner);
                sParaTemp.Add("_input_charset", AlipayConfig.Input_charset.ToLower());
                sParaTemp.Add("service", "create_direct_pay_by_user");
                sParaTemp.Add("payment_type", payment_type);
                sParaTemp.Add("notify_url", notify_url);
                sParaTemp.Add("return_url", return_url);
                sParaTemp.Add("seller_email", seller_email);
                sParaTemp.Add("out_trade_no", out_trade_no);
                sParaTemp.Add("subject", subject);
                sParaTemp.Add("total_fee", total_fee);
                sParaTemp.Add("body", body);
                sParaTemp.Add("show_url", show_url);
                sParaTemp.Add("anti_phishing_key", anti_phishing_key);
                sParaTemp.Add("exter_invoke_ip", exter_invoke_ip);

                //建立请求
                string sHtmlText = AlipaySubmit.BuildRequest(sParaTemp, "get", "确认");
                Response.Write(sHtmlText);
            }
        }
    }
}
